#!/usr/bin/env python
import turtle
def draw_triangle(points, color, t):
t.fillcolor(color)
t.up()
t.goto(points[0][0],points[0][1])
t.down()
t.begin_fill()
t.goto(points[1][0], points[1][1])
t.goto(points[2][0], points[2][1])
t.goto(points[0][0], points[0][1])
t.end_fill()
def get_mid(p1, p2):
return ((p1[0] + p2[0]) / 2, (p1[1] + p2[1]) / 2)
def sierpinski(points, degree, turt):
color_map = ['violet', 'yellow', 'white', 'green', 'red',
'blue', 'orange']
draw_triangle(points, color_map[degree], turt)
if degree > 0:
# left
sierpinski([points[0],
get_mid(points[0], points[1]),
get_mid(points[0], points[2])],
degree-1, turt)
# top
sierpinski([points[1],
get_mid(points[0], points[1]),
get_mid(points[1], points[2])],
degree-1, turt)
# right
sierpinski([points[2],
get_mid(points[2], points[1]),
get_mid(points[0], points[2])],
degree-1, turt)
def main():
turt = turtle.Turtle()
my_win = turtle.Screen()
my_points = [[-200, -150],
[0, 200],
[200, -150]]
sierpinski(my_points, 5, turt)
my_win.exitonclick()
if __name__ == "__main__":
main()
mainloop()